/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package validators;

import java.util.Iterator;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

/**
 *
 * @author exia
 */
@FacesValidator(value="pwdValidator")
public class PasswordValidator implements Validator{

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        String pwd2= (String)value;
     
      
        //on veut récupérer la valeur stockée dans le composant d'id pass1id de type UIInput - c.à.d le premier mot de passe saisi
        // cette valeur est assignée au composant durant la phase apply request value
        
        //on accède à la racine de l'arbre des composants restauré durant la phase restore view
        UIViewRoot viewRoot = context.getViewRoot();
        UIInput pwd1Input = (UIInput)viewRoot.findComponent("form:pass1id");//on recherche le composant via son id
        System.out.println("------"+context.getViewRoot().findComponent("form:pass1id"));
        String pwd1 = (String) pwd1Input.getValue(); //on récupère la valeur
        
       
         if (!pwd2.equals(pwd1)){//si les 2 mdp ne sont pas identiques
             FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, "vous n'avez pas saisi le même mdp", null);//on crée un message d'erreur
             throw new ValidatorException(message);//on déclenche une exception qui interrompt le cycle de vie : on passe directement à Render Response
         }
    }
    
    
}
